package com.shuda.business.monitor.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 监控统计DTO类
 */
@Schema(name = "MonitorStatisticsDTO", description = "监控统计DTO")
public class MonitorStatisticsDTO {

    @Schema(description = "总数据量")
    private Long totalDataCount;

    @Schema(description = "已处理数据量")
    private Long processedDataCount;

    @Schema(description = "成功数据量")
    private Long successDataCount;

    @Schema(description = "失败数据量")
    private Long failedDataCount;

    @Schema(description = "异常数据量")
    private Long exceptionDataCount;

    @Schema(description = "成功率")
    private String successRate;

    @Schema(description = "开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    @Schema(description = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    @Schema(description = "渠道统计")
    private Object channelStatistics;

    /**
     * 获取总数据量
     * @return Long 总数据量
     */
    public Long getTotalDataCount() { return totalDataCount; }

    /**
     * 设置总数据量
     * @param totalDataCount Long
     */
    public void setTotalDataCount(Long totalDataCount) { this.totalDataCount = totalDataCount; }

    /**
     * 获取已处理数据量
     * @return Long 已处理数据量
     */
    public Long getProcessedDataCount() { return processedDataCount; }

    /**
     * 设置已处理数据量
     * @param processedDataCount Long
     */
    public void setProcessedDataCount(Long processedDataCount) { this.processedDataCount = processedDataCount; }

    /**
     * 获取成功数据量
     * @return Long 成功数据量
     */
    public Long getSuccessDataCount() { return successDataCount; }

    /**
     * 设置成功数据量
     * @param successDataCount Long
     */
    public void setSuccessDataCount(Long successDataCount) { this.successDataCount = successDataCount; }

    /**
     * 获取失败数据量
     * @return Long 失败数据量
     */
    public Long getFailedDataCount() { return failedDataCount; }

    /**
     * 设置失败数据量
     * @param failedDataCount Long
     */
    public void setFailedDataCount(Long failedDataCount) { this.failedDataCount = failedDataCount; }

    /**
     * 获取异常数据量
     * @return Long 异常数据量
     */
    public Long getExceptionDataCount() { return exceptionDataCount; }

    /**
     * 设置异常数据量
     * @param exceptionDataCount Long
     */
    public void setExceptionDataCount(Long exceptionDataCount) { this.exceptionDataCount = exceptionDataCount; }

    /**
     * 获取成功率
     * @return String 成功率
     */
    public String getSuccessRate() { return successRate; }

    /**
     * 设置成功率
     * @param successRate String 如 99.99%
     */
    public void setSuccessRate(String successRate) { this.successRate = successRate; }

    /**
     * 获取开始时间
     * @return LocalDateTime 开始时间
     */
    public LocalDateTime getStartTime() { return startTime; }

    /**
     * 设置开始时间
     * @param startTime LocalDateTime
     */
    public void setStartTime(LocalDateTime startTime) { this.startTime = startTime; }

    /**
     * 获取结束时间
     * @return LocalDateTime 结束时间
     */
    public LocalDateTime getEndTime() { return endTime; }

    /**
     * 设置结束时间
     * @param endTime LocalDateTime
     */
    public void setEndTime(LocalDateTime endTime) { this.endTime = endTime; }

    /**
     * 获取渠道统计
     * @return Object 渠道统计
     */
    public Object getChannelStatistics() { return channelStatistics; }

    /**
     * 设置渠道统计
     * @param channelStatistics Object
     */
    public void setChannelStatistics(Object channelStatistics) { this.channelStatistics = channelStatistics; }
}